Lemon's blog

实验吧— Crypto Write up(一)

Record my learning process of CTF.

字数统计: 1.8k阅读时长: 6 min
2019/07/18 Share

前言:最近先做一些关于古典密码的题,了解常见的古典密码。

变异凯撒
1
加密密文:afZ_r9VYfScOeO_UL^RWUc

刚开始以为这道题考的是凯撒加密,就在线求解,结果不行,那就来分析题目,变异凯撒,应该是利用凯撒加密的原理加以变形,观察一波,提示又提示说格式为flag{},发现a的ascii到f的ascii偏移量为5,f的ascii到l的ascii偏移量为6,Z的ascii到a的ascii偏移量为7,总结出以后的每个字母偏移量都要加1,观察出规律了,就写脚本跑吧。

附上ASCII表
在这里插入图片描述
py3脚本

1
2
3
4
5
6
7
8
9
10
11
12
a = 'afZ_r9VYfScOeO_UL^RWUc'

b = ''

i = 5
for d in a:
b+=chr(ord(d)+i)
i+=1
print(b)
#ord()取出一个字符变成ASCII
#输出结果:
flag{Caesar_variation}

做题小结:凯撒加密是一种替换加密,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。有时候需要自己区观察规律,不能死板一味利用在线工具,要多按照题意写出相应的脚本。

围在栅栏中的爱

最近一直在好奇一个问题,QWE到底等不等于ABC?
-.- .. –.- .-.. .– - ..-. -.-. –.- –. -. … — —
flag格式:CTF{xxx}

首先就摩斯密码解密,解出明文字符为:

1
KIQLWTFCQGNSOO

再来看提示:QWE到底等不等于ABC?
想起来QWE密码,利用QWE密码进行求解,但是求解结果不对,应该是漏掉了一些内容,观察题目发现围在栅栏中的爱,应该还要涉及到栅栏解密,试试看
在这里插入图片描述
先试试以两字为一栏的,进行QWE解密,解出

1
rabnayihsevoli

再结合刚才题目中说到,观察到解出来的字符后面有love这个词,不过是倒叙的,那就反过来看看。
在这里插入图片描述提交即为flag

做题小结:通过这道题了解了QWE加密,键盘按ABC的顺序排列得到对应的字母。
在这里插入图片描述
附上大佬博客QWE加密

疑惑的汉字

王夫 井工 夫口 由中人 井中 夫夫 由中大

当铺密码在线解密
在这里插入图片描述
写一个简单脚本跑一下

1
2
3
4
5
6
7
a = [67,84,70,123,82,77,125]

b=''

for i in a:
b=b+chr(i)
print(b)

得出flag

1
CTF{RM}

做题小结:题很简单,主要是为了了解当铺密码,当前汉字有多少笔画出头,就是转化成数字几,按照这个规则即可解出当铺密码。

古典密码

密文内容如下{79 67 85 123 67 70 84 69 76 88 79 85 89 68 69 67 84 78 71 65 72 79 72 82 78 70 73 69 78 77 125 73 79 84 65}
请对其进行解密
提示:1.加解密方法就在谜面中
2.利用key值的固定结构
格式:CTF{ }

先对密文求解,密文为ASCII转成字符

1
2
3
4
5
6
7
8
9
a = [79,67,85,123,67,70,84,69,76,88,79,85,89,68,69,67,84,78,71,65,72,79,72,82,78,70,73,69,78,77,125,73,79,84,65]

b=''

for i in a:
b=b+chr(i)
print(b)
#输出结果:
OCU{CFTELXOUYDECTNGAHOHRNFIENM}IOTA

用凯撒和栅栏尝试都不行,去看提示,提示说加解密方法就在谜面中,。。。
什么也没看出来,再去看题目,发现是古典密码而古典密码编码方法归根结底主要有两种,即置换代换
置换密码中包含列置换周期置换,在百度看到一篇大佬的博客后,感觉这个题应该就是列置换,试试吧。

在此之前,先来了解一下列置换的原理,这里还是参考大佬的博客吧,自己表达不出来这个原理。 置换密码之列置换

首先这个密文一共有35个字符,可以分为7*55*7的矩阵
就先以7*5来尝试

1
2
3
4
5
6
	1234567
1 OCU{CFT
2 ELXOUYD
3 ECTNGAH
4 OHRNFIE
5 NM}IOTA

联系第二个提示,key值的固定结构即为CTF{},这个信息给我们提高很大的便利,这样就可以确定一些列的位置。

开始肯定是C,然后是T,再来就F{,最后便是}

所以就有两种情况,因为题中第一行有两个C
顺序即为这两种

2764xx3或5764xx3

先试第一种,当然第一种也有两种情况,分别为

1
2764513或2764153

先试第一种

1
2
3
4
5
6
7
CTF{COU
LDYOUEX
CHANGET
HEINFOR
MATION}
即为
CTF{COULDYOUEXCHANGETHEINFORMATION}

提交,对了。。。运气好,否则得试好几次。

我喜欢培根

– — .-. … . ..–.- .. … ..–.- -.-. — — .-.. ..–.- -… ..- - ..–.- -… .- -.-. — -. ..–.- .. … ..–.- -.-. — — .-.. . .-. ..–.- -.. -.-. -.-. -.. -.-. -.-. -.-. -.. -.. -.. -.-. -.. -.-. -.-. -.-. -.. -.. -.-. -.-. -.-. -.-. -.-. -.-. -.-. -.-. -.-. -.. -.. -.-. -.. -.-. -.-. -.-. -.-. -.. -.-. -.-. -.-. -.-. -.-. / -.-. -.. -.-. -.-. -.-. -.. -.-. -.-. -.. -.-. / -.-. -.-. -.-. -.. -.-. -.-. -.. -.. -.. -.-. -.-. -.. -.. -.. -.-. -.-. -.. -.-. -.. -..

摩斯密码解密

1
MORSE_IS_COOL_BUT_BACON_IS_COOLER_DCCDCCCDDDCDCCCDDCCCCCCCCCDDCDCCCCDCCCCCCDCCCDCCDCCCCDCCDDDCCDDDCCDCDD

摩斯是酷的但培根更酷,利用培根解密
这里需要注意一点就是这里按照密文字母顺序替换成AB,因为培根密码中只有A和B.
原理详解:
在这里插入图片描述

1
DCCDCCCDDDCDCCCDDCCCCCCCCCDDCDCCCCDCCCCCCDCCCDCCDCCCCDCCDDDCCDDDCCDCDD

将C替换成A,D替换成B,在线网站解密即可得出flag。

做题小结:重新熟悉一下培根密码。

Fair-Play

The quick brown fox jumps over the lazy dog!
ihxo{smzdodcikmodcismzd}

刚开始接触这道题根本没有一点思路,无奈只有百度,发现这是古典密码中的Playfair 加密算法,那么就来了解一下。

Playfair算法基于一个5*5的字母矩阵,该矩阵使用一个关键词构造,方法是按从左到右、从上到下顺序,填入关键词的字母(去除重复字母)后,将字母表其作余字母填入。

加密规则

Playfair加密算法是先将明文按两个字母一组进行分组,然后在矩阵中找对应的密文。

以这道题为例,来了解一下加密规则
首先编制密码表
题中给我们的密匙为The quick brown fox jumps over the lazy dog!
密文为ihxo{smzdodcikmodcismzd}
先根据密匙来编织出密码表(我这里是按照从左到右)

1
2
3
4
5
t h e q u
i c k b r
o w n f x
m p s v l
a z y d g

取密文的规则如下:

  1. 若明文出现相同字母在一组,则在重复的明文字母中插入一个填充字母(eg:z)进行分隔后重新分组(eg: balloon被重新分组为ba lz lo on)
  2. 若分组到最后一组时只有一个字母,则补充字母z
  3. 若明文字母在矩阵中同行,则循环取其右边下一个字母为密文(矩阵最右边的下一个是最左边的第一个)(eg: br被加密为ri)
  4. 若明文字母在矩阵中同列,则循环取其下边下一个字母为密文(矩阵最下边的下一个是最上边的第一个)(eg: pz被加密为zh)
  5. 若明文字母在矩阵中不同行不同列,则取其同行且与同组另一字母同列的字母为密文(eg: mz被加密为pa,fg被加密为xd)

这就是加密方式,如果懂得了加密,那么反过来推出明文即可

在这里插入图片描述

做题小结:一开始会很头疼不懂原理,把原理搞懂便很好做的,又了解了一种新的古典密码,继续学习吧!另附上大佬博客python之playfair密码算法详解[原创]向大佬学习。

CATALOG
  1. 1. 变异凯撒
  2. 2. 围在栅栏中的爱
  3. 3. 疑惑的汉字
  4. 4. 古典密码
  5. 5. 我喜欢培根
  6. 6. Fair-Play